package com.whfc.fvs.service;

import com.whfc.fvs.enums.FvsDevicePtzOption;
import com.whfc.common.result.ListData;
import com.whfc.fvs.dto.FvsDeviceDTO;
import com.whfc.fvs.dto.FvsRecordDTO;
import com.whfc.fvs.dto.FvsStreamDTO;
import com.whfc.fvs.dto.FvsTokenDTO;
import com.whfc.fvs.param.FvsDeviceAddParam;
import com.whfc.fvs.param.FvsDeviceEditParam;


import java.util.Date;

/**
 * @Description: 视频监控接口
 * @author: qzexing
 * @version: 1.0
 * @date: 2020/4/29 21:34
 */
public interface FvsPlatformService {

    /**
     * 添加设备
     *
     * @param fvsDeviceDTO   设备DTO
     * @param deviceAddParam 添加设备param
     */
    void addDevice(FvsDeviceDTO fvsDeviceDTO, FvsDeviceAddParam deviceAddParam);

    /**
     * 删除设备
     *
     * @param fvsDeviceDTO 设备DTO
     */
    void deleteDevice(FvsDeviceDTO fvsDeviceDTO);


    /**
     * 获取截图地址
     *
     * @param fvsDeviceDTO 设备DTO
     * @return 截图地址
     */
    String getSnapshotUrl(FvsDeviceDTO fvsDeviceDTO);


    /**
     * 获取视频监控直播地址
     *
     * @param fvsDeviceDTO 设备DTO
     * @return 视频监控直播地址
     */
    FvsStreamDTO getStreamUrl(FvsDeviceDTO fvsDeviceDTO);


    /**
     * 获取视频监控录像地址
     *
     * @param fvsDeviceDTO 设备DTO
     * @param startTime    开始时间
     * @param endTime      结束时间
     * @return 视频监控直播地址列表
     */
    ListData<FvsRecordDTO> getRecordList(FvsDeviceDTO fvsDeviceDTO, Date startTime, Date endTime);


    /**
     * 设备云台操作
     *
     * @param fvsDeviceDTO    设备DTO
     * @param devicePtzOption 云台操作
     */
    void ptz(FvsDeviceDTO fvsDeviceDTO, FvsDevicePtzOption devicePtzOption);


    /**
     * 获取视频监控token
     *
     * @param deptId 组织机构ID
     * @return token
     */
    FvsTokenDTO getToken(Integer deptId);

}
